import {createSlice} from '@reduxjs/toolkit'
// 创建一各reducer的片段（切片）
export const  counterSlice = createSlice(
  {
    name: 'couter', // 当前仓库切片的标识符
    initialState: { // 状态的初始属性和初值
      value: 100,
      isLogin: false,
    },
// reducers对应的就是actions中的函数， 再rtk中，不需要单独些actions.
    reducers: {
      // dispatch（{type:'increment'}）
      increment: (state)=>{ // 注入state参数，state就是上面的 initialState 这个对象
        // 函数不需要返回一个state,不要写reutrn, 也不要默认返回一个State
        state.value  = state.value + 1; 
      },
      // dispatch（{type:'decrement'}）
      decrement: (state)=>{
        state.value = state.value - 1;
      },
      // 当使用dispatch({type:'incrementByAmount',paylaod: 100})时，就可以拿到payload进行业务的处理。不仅仅时 "+"。
      // payload属性不能变化
      incrementByAmount: (state, action)=>{
        state.value = state.value + action.payload  
      },
      // dispatch({type:'login', payload: true})
      login: (state, action)=>{
        state.isLogin = action.payload
      }
    }
  }
)
// 通过从counterSlice.actions解构，创建actions对象
// increment,decrement, incrementByAmount, login就是对应的actions里面的函数
export const {increment,decrement, incrementByAmount, login} = counterSlice.actions; 
// 必须要默认公开reducer
export default counterSlice.reducer